/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package transervfx.Logica;

import java.util.List;
import transervfx.Dato.DAO.UsuarioDAO;
import transervfx.Dato.Entidad.Usuario;



/**
 * Gestiona el usuario del sistema.
 */
public class GestorUsuario {
 private static GestorUsuario INSTANCE = null;

  /**
     *  Crea el GestorUsuario
     */
    private GestorUsuario() {
    }

    /**
     * creador sincronizado para protegerse de posibles problemas  multi-hilo
     * otra prueba para evitar instanciación múltiple
     */
    private synchronized static void createInstance() {
        if (INSTANCE == null) {
            INSTANCE = new GestorUsuario();
        }
    }

    public static GestorUsuario getInstance() {
        if (INSTANCE == null) {
            createInstance();
        }
        return INSTANCE;
    }

    /**
     * Obtiene el usuario con el nick y pass especificado en los parámetros.
     * @param nick nombre del usuario.
     * @param pass contraseña del usuario.
     * @return usuario
     */
    public Usuario darUsuario(String nick, String pass)
    {
        return  UsuarioDAO.getInstance().findByNombreAndCave(nick, pass);
   
    }
    
    public void guardarUsuario(Usuario u){
        UsuarioDAO.getInstance().persist(u);
    }

    public List<Usuario> findAll() {
       return UsuarioDAO.getInstance().findAll();
    }

    public List<Usuario> findAll(int i, int itemPorPagina) {
        return UsuarioDAO.getInstance().findAll(i, itemPorPagina);
    }
    
     public List<Usuario> buscarPorFiltro(String nombreUsuario,String apellido, String nombre, String tipoDocumento, Integer numeroDocumento) {
           return UsuarioDAO.getInstance().buscarPorFiltro(nombreUsuario, apellido, nombre, tipoDocumento, numeroDocumento);
     }

    public Long numeroDeUsuarios() {
         return UsuarioDAO.getInstance().numeroDeUsuarios();
    }

    public Long numeroDeUsuariosFiltrados(String nombreUsuario, String apellido, String nombre, String tipoDocumento, Integer numeroDocumento) {
         return UsuarioDAO.getInstance().numeroDeUsuariosFiltrados(nombreUsuario, apellido, nombre, tipoDocumento, numeroDocumento);
    }

    public List<Usuario> buscarPorFiltro(String nombreUsuario,String apellido, String nombre, String tipoDocumento, Integer numeroDocumento, int ini, int fin) {
       return UsuarioDAO.getInstance().buscarPorFiltroRango(nombreUsuario, apellido, nombre, tipoDocumento, numeroDocumento, ini, fin);
    }

}
